package com.expert.miniapp.service;

import com.expert.miniapp.dao.Instrument;
import com.github.pagehelper.PageInfo;
import java.util.List;

/**
 * 仪器设备业务逻辑接口
 * 提供仪器设备相关的业务操作方法
 */
public interface InstrumentService {

    /**
     * 根据仪器设备ID获取详情
     * @param instrumentId 仪器设备ID
     * @return 仪器设备详情，如果不存在则返回null
     */
    Instrument getInstrumentById(String instrumentId);

    /**
     * 根据设备分类获取仪器设备列表
     * @param category 设备分类
     * @return 符合分类条件的仪器设备列表
     */
    List<Instrument> getInstrumentsByCategory(String category);

    /**
     * 获取所有仪器设备（支持分页）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 仪器设备分页信息
     */
    PageInfo<Instrument> getAllInstruments(Integer pageNum, Integer pageSize);

    /**
     * 按权重获取推荐仪器设备列表（支持分页）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 推荐仪器设备分页信息
     */
    PageInfo<Instrument> getRecommendedInstruments(Integer pageNum, Integer pageSize);

    /**
     * 模糊搜索仪器设备（支持分页）
     * @param keyword 搜索关键词
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 搜索结果分页信息
     */
    PageInfo<Instrument> searchInstruments(String keyword, Integer pageNum, Integer pageSize);
}